Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO

■RS-232C BIOS


INT 19h - Function 00h(BIOS)
分類	RS-232C BIOS
名前	RS-232C BIOSの初期化(シングルモード)
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=00h:チャネル0(本体内蔵RS-232C)指定
	   10h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   20h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	AL=転送速度■[チャネル0のみ有効]
	    00h=  75bps
	    01h= 150bps
	    02h= 300bps
	    03h= 600bps
	    04h=1200bps
	    05h=2400bps
	    06h=4800bps
	    07h=9600bps
	    08h=19200bps■[19200bps対応機のみ]
	    * サポート外の数値を指定すると1200bpsに設定される
	BH=送信時タイムアウト時間(単位:500ms)
	    * 範囲は01〜FFh。00hを指定するとデフォルト値(02h)
	BL=受信時タイムアウト時間(単位:500ms)
	    * 範囲は01〜FFh。00hを指定するとデフォルト値
	      (ノーマルモード1Eh,ハイレゾモード3Ch)
	CH=8251Aのモードワード(非同期モード)
	    bit 7,6:ストップビット長
		11b=2ビット
		10b=1.5ビット
		01b=1ビット
	    bit 5   :パリティ指定
		1=偶数パリティ
		0=奇数パリティ
	    bit 4   :パリティ有無
		1=あり
		0=なし
	    bit 3,2:キャラクタ長
		11b=8ビット
		10b=7ビット
		01b=6ビット
		00b=5ビット
	    bit 1,0:クロックレート
		11b=64倍
		10b=16倍
	CL=8251Aのコマンドワード
	    bit 6:内部リセット
		1=する
		0=しない
	    bit 5:RTS端子
		1=ON
		0=OFF
	    bit 4:エラーフラグリセット
		1=する
		0=しない
	    bit 3:ブレイク信号送信
		1=する
		0=しない
	    bit 2:受信許可
		1=許可
		0=禁止
	    bit 1:DTR端子
		1=ON
		0=OFF
	    bit 0:送信許可
		1=許可
		0=禁止
	ES:DI=バッファコントロールブロックの先頭アドレス
	DX=受信バッファサイズ(単位:バイト)
出力	AH=リターンコード
	    00h=正常終了
	    04h=チャネル1,2指定時に、拡張RS-232Cインターフェースボードが
	        接続されていない■[ハイレゾ]
	AL=不定
解説  o 調歩同期モードでRS-232C BIOSを初期化する。受信・送信時の
	XON/XOFFフロー制御は行わない。
      o	RS-232C BIOSでは、同期通信はサポートしていない。
      o 受信バッファは、ES:DIで指定するバッファコントロールブロックの直後に
	確保される。
	受信バッファの先頭アドレスは、ノーマルモードとPC-98LT・HAはES:DI+14h、
	ハイレゾモードはES:DI+18h。
	受信バッファの末尾は、全機種ともES:DI+14h+DX-1になる。ハイレゾモード
	は、バッファコントロールブロックのサイズがノーマルモードより4バイト
	多いが、互換性をとるために実際の受信バッファサイズをDXで指定された
	値より4バイト分減らしているためである。
      o	受信バッファに格納可能な受信文字数は、実際の受信バッファサイズの半分
	になる。シングルモードでは、受信バッファに、受信文字(1バイト)と同時に、
	その文字を受信したときの8251Aのステータス(1バイト)を格納しているため
	である。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションをトラップ
	する。このとき、ファンクションの機能やレジスタインターフェースはBIOSと
	非互換となるので注意。INT 19h - Function 00h(RSDRV)参照。
      o ハイレゾモードのとき、チャネル1,2の転送速度は拡張RS-232C
	インターフェースボード上のDIP SWで設定する。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
	レジスタインターフェースはINT 19hと同じ。
      u 19200bps対応機かどうかの判別は、F8E8:0002h(ノーマル)または
	FFE8:0002h(ハイレゾ)を参照して行う。
	本体が19200bps対応機ならば、98ハイレゾボード(PC-9821A-E02)のハイレゾ
	モードでも、BIOSで19200bpsが使用できる。
      o バッファコントロールブロックなどの詳細については、
	テクニカルデータブック参照。
関連	INT 19h - Function 01h
	INT 19h - Function 07h[ハイレゾ]
	0000:0556h
	0000:055Bh
	0000:05C1h
	0000:05F0h
	0000:05F4h
	F8E8:0002h bit 2[ノーマル]
	FFE8:0002h bit 2[ハイレゾ]
	I/O 0030h
	I/O 0035h
	I/O 0075h
	I/O 00B0h


INT 19h - Function 01h(BIOS)
分類	RS-232C BIOS
名前	フロー制御を伴う初期化(シングルモード)
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=01h:チャネル0(本体内蔵RS-232C)指定
	   11h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   21h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	AL=転送速度■[チャネル0のみ有効]
	    * INT 19h - Function 00h(BIOS)と同じ
	BH=送信時タイムアウト時間(単位:500ms)
	    * INT 19h - Function 00h(BIOS)と同じ
	BL=受信時タイムアウト時間(単位:500ms)
	    * INT 19h - Function 00h(BIOS)と同じ
	CH=8251Aのモードワード(非同期モード)
	    * INT 19h - Function 00h(BIOS)と同じ
	CL=8251Aのコマンドワード
	    * INT 19h - Function 00h(BIOS)と同じ
	ES:DI=バッファコントロールブロックの先頭アドレス
	DX=受信バッファサイズ(単位:バイト)
出力	AH=リターンコード
	    00h=正常終了
	    04h=チャネル1,2指定時に、拡張RS-232Cインターフェースボードが
	        接続されていない■[ハイレゾ]
	AL=不定
解説  o 調歩同期モードでRS-232C BIOSを初期化する。受信時のXON/XOFFフロー制御を
	行う。
	送信時のXON/XOFFフロー制御は行わない。ノーマルモードのRS-232C BIOSは、
	送信時のXON/XOFFフロー制御はサポートしていない。
	そのほかはINT 19h - Function 00h(BIOS)と同じ。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
	トラップする。このとき、ファンクションの機能やレジスタインターフェース
	はBIOSと非互換となるので注意。INT 19h - Function 01h(RSDRV)参照。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
	レジスタインターフェースはINT 19hと同じ。
関連	INT 19h - Function 00h
	INT 19h - Function 07h[ハイレゾ]
	I/O 0030h
	I/O 0035h
	I/O 0075h
	I/O 00B0h


INT 19h - Function 02h(BIOS)
分類	RS-232C BIOS
名前	受信データ長の取得
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=02h:チャネル0(本体内蔵RS-232C)指定
	   12h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   22h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
出力	AH=リターンコード
	   00h=正常終了
	   01h=RS-232C BIOSが初期化されていない
	   02h=受信バッファオーバーフロー
	CX=受信バッファ内の受信文字数
解説  o 受信バッファに格納されている受信文字数を調べる。
	シングルモードのとき、および拡張モードで受信バッファの管理を
	ワード単位に指定しているときは、受信文字とステータスが2バイト一組で
	受信バッファに格納されるが、この場合もこのファンクションで返される
	値は受信文字数である。
      u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
	受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
      o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
	しなければならない。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
	トラップする。このとき、ファンクションの機能やレジスタインターフェース
	はBIOSと非互換となるので注意。INT 19h - Function 02h(RSDRV)参照。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
	レジスタインターフェースはINT 19hと同じ。
関連	


INT 19h - Function 03h(BIOS)
分類	RS-232C BIOS
名前	データの送信
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=03h:チャネル0(本体内蔵RS-232C)指定
	   13h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   23h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	AL=送信データ
	CL=参照ステータスビット■[拡張モード]
	    bit 7=DSR端子
	    bit 6=CTS端子
	    bit 5〜3=000bを指定
	    bit 2=TxEMPTYフラグ
	    bit 1,0=00bを指定
出力	AH=リターンコード
	    00h=正常終了
	    01h=RS-232C BIOSが初期化されていない
	    02h=受信バッファオーバーフロー
	    03h=タイムアウト
	    05h=送信時XON/XOFF有効時、XOFF受信により送信停止中■[ハイレゾ]
	AH=不定
解説  o 1バイトのデータを送信する。
	送信データのバッファリングは行わない。
      u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
	受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
      o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
	しなければならない。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
	トラップする。このとき、ファンクションの機能やレジスタインターフェース
	はBIOSと非互換となるので注意。INT 19h - Function 03h(RSDRV)参照。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
	レジスタインターフェースはINT 19hと同じ。
      o バッファコントロールブロックなどの詳細については、
	テクニカルデータブック参照。
関連	


INT 19h - Function 04h(BIOS)
分類	RS-232C BIOS
名前	データの受信
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=04h:チャネル0(本体内蔵RS-232C)指定
	   14h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   24h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
出力	AH=リターンコード
	    00h=正常終了
	    01h=RS-232C BIOSが初期化されていない
	    02h=受信バッファオーバーフロー
	    03h=タイムアウト
	CH=受信データ
	CL=データ受信時のステータス
	    bit 7:DSR
		1=ON
		0=OFF
	    bit 6:BREAK
		1=検出
		0=非検出
	    bit 5:フレーミングエラー
		1=検出
		0=非検出
	    bit 4:オーバーランエラー
		1=検出
		0=非検出
	    bit 3:パリティエラー
		1=検出
		0=非検出
	    bit 2:■[ノーマル]TxEMPTY
		1=送信バッファエンプティ
		0=送信バッファフル
	    bit 2:■[ハイレゾ]システムポートステータス CI#
		1=OFF
		0=ON
	    bit 1:システムポートステータス CTS#
		1=OFF
		0=ON
	    bit 0:システムポートステータス CD#
		1=OFF
		0=ON
解説  o 受信バッファから1バイト分の受信データを取り出し、受信データと
	ステータスを出力する。
	受信バッファ内に受信データがなければ、初期化時に設定された
	受信時タイムアウト時間だけ待つ。
      o 拡張モードで受信バッファの管理をバイト単位に指定しているときは、
	CLに現在のステータスを返す。
      u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
	受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
      o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
	しなければならない。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
	トラップする。このとき、ファンクションの機能やレジスタインターフェース
	はBIOSと非互換となるので注意。INT 19h - Function 04h(RSDRV)参照。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
	レジスタインターフェースはINT 19hと同じ。
      o バッファコントロールブロックなどの詳細については、
	テクニカルデータブック参照。
関連	


INT 19h - Function 05h(BIOS)
分類	RS-232C BIOS
名前	8251Aへのコマンド出力
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=05h:チャネル0(本体内蔵RS-232C)指定
	   15h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   25h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	AL=8251Aに出力するコマンド
	    * INT 19h - Function 00h(BIOS)と同じ
出力	AH=リターンコード
	    00h=正常終了
	    01h=RS-232C BIOSが初期化されていない
	    02h=受信バッファオーバーフロー
解説  o 8251Aにコマンドワードを書き込む。
      u テクニカルデータブックには「8251Aに出力するコマンド」をCLで指定
	するように記述されているが、実際にはALで指定する。
      u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
	受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
      o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
	しなければならない。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
	トラップする。このとき、ファンクションの機能やレジスタインターフェース
	はBIOSと非互換となるので注意。INT 19h - Function 05h(RSDRV)参照。
      u PC-98HAテクニカルデータブックには、リターンコードがALで返されると
	記述されているが、実際はAHに返される。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
	レジスタインターフェースはINT 19hと同じ。
      o バッファコントロールブロックなどの詳細については、
	テクニカルデータブック参照。
関連	


INT 19h - Function 06h(BIOS)
分類	RS-232C BIOS
名前	ステータスの取得
対象	ノーマル,ハイレゾ,PC-98LT・HA
入力	AH=06h:チャネル0(本体内蔵RS-232C)指定
	   16h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
	   26h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
出力	AH=リターンコード
	    00h=正常終了
	    01h=RS-232Cが初期化されていない
	    02h=受信バッファオーバーフロー
	CH=8251Aステータス
	    bit 7:DSR
		1=ON
		0=OFF
	    bit 6:BREAK
		1=検出
		0=非検出
	    bit 5:フレーミングエラー
		1=検出
		0=非検出
	    bit 4:オーバーランエラー
		1=検出
		0=非検出
	    bit 3:パリティエラー
		1=検出
		0=非検出
	    bit 2:TxEMPTY
		1=送信バッファエンプティ
		0=送信バッファフル
	    bit 1:RxREADY
		1=受信キャラクタあり
		0=受信キャラクタなし
	    bit 0:TxREADY
		1=送信レディ
		0=送信ビジー
	CL=モデムステータス
	    bit 7:CI#
		1=OFF
		0=ON
		* PC-9801初代はCI#をサポートしていない。常に0。
	    bit 6:CTS#
		1=OFF
		0=ON
	    bit 5:CD#
		1=OFF
		0=ON
	    bit 4〜0:リザーブ
解説  o RS-232Cの現在のステータスを取得する。
      u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
	受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
      o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
	しなければならない。
      u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
	トラップする。このとき、ファンクションの機能やレジスタインターフェース
	はBIOSと非互換となるので注意。INT 19h - Function 06h(RSDRV)参照。
      o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
	チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h, 
	INT D5hのレジスタインターフェースはINT 19hと同じ。
      o バッファコントロールブロックなどの詳細については、
	テクニカルデータブック参照。
関連	I/O 0033h


INT 19h - Function 07h(BIOS)
分類	RS-232C BIOS
名前	RS-232C BIOSの初期化(拡張モード)
対象	ハイレゾ
入力	AH=07h:チャネル0(本体内蔵RS-232C)指定
	   17h:チャネル1(拡張RS-232Cインターフェース)指定
	   27h:チャネル2(拡張RS-232Cインターフェース)指定
	AL=転送速度■[チャネル0のみ有効]
	    * INT 19h - Function 00h(BIOS)と同じ
	BX=BIOS制御情報
	    bit 15:リザーブ
	    bit 14:SI/SO制御
		1= 行う
		0= 行わない
	    bit 13:送信側Xフロー制御
		1= あり
		0= なし
	    bit 12:受信側Xフロー制御
		1= あり
		0= なし
	    bit 11:受信バッファフル時のER(DTR)信号制御
		1= する(ER OFFする)
		0= しない
	    bit 10:受信バッファフル時のRS(RTS)信号制御
		1= する(RS OFFする)
		0= しない
	    bit 9,8:受信したDEL(7Fh/FFh)の処理
		11b= 無視する
		10b= BS(08h)に変換
		01b= NULL(00h)に変換
		00b= 無変換
	    bit 7〜1:リザーブ
	    bit 0:受信バッファの管理
		1= ワード単位
		0= バイト単位
	CH=8251Aのモードワード(非同期モード)
	    * INT 19h - Function 00h(BIOS)と同じ
	CL=8251Aのコマンドワード
	    * INT 19h - Function 00h(BIOS)と同じ
	DX=受信バッファサイズ
	ES:DI=バッファコントロールブロックの先頭アドレス
出力	AH=リターンコード
	    00h=正常終了
	    04h=チャネル1,2指定時に、拡張RS-232Cインターフェースボードが
	        接続されていない
解説  o 調歩同期モードでRS-232C BIOSを初期化する。
	受信・送信時のXON/XOFFフロー制御を選択することも可能。
	このファンクションで初期化すると、毎受信割り込み終了時(EOI発行後)に
	INT 1Fh - Function 83hを実行する。
      o 受信バッファは、ES:DIで指定するバッファコントロールブロックの直後に
	確保される。
	受信バッファの先頭アドレスはES:DI+18h、末尾はES:DI+18h+DX-1になる。
      o	受信バッファに格納可能な受信文字数は、受信バッファの管理をワード単位に
	指定した(BX bit 0=1)とき、実際の受信バッファサイズの半分になる。受信
	バッファに、受信文字(1バイト)と同時に、その文字を受信したときの8251A
	のステータス(1バイト)を格納しているためである。
	受信バッファの管理をバイト単位に指定した(BX bit 0=0)ときは、実際の受信
	バッファサイズと同じ受信文字数を格納できる。
      o	そのほかは、INT 19h - Function 00h(BIOS)と同じ。
      o バッファコントロールブロックなどの詳細については、
	テクニカルデータブック参照。
関連	INT 19h - Function 00h(BIOS)
	INT 1Fh - Function 83h[ハイレゾ]
	I/O 0030h
	I/O 0035h
	I/O 0075h
	I/O 00B0h